package com.epalmpay.controller.agent.index;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.annotation.Resource;

import com.epalmpay.entity.profit.Profit;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.epalmpay.commom.BaseController;
import com.epalmpay.exception.ApplicationException;
import com.epalmpay.status.Rescode;
import com.epalmpay.dto.agent.AgentIndexInDTO;
import com.epalmpay.dto.agent.AgentIndexListOutDTO;
import com.epalmpay.dto.agent.AgentIndexOutDTO;
import com.epalmpay.dto.agent.AgentStatisAgentDaySevenDataOutDTO;
import com.epalmpay.dto.mall.MallGoodOutDTO;
import com.epalmpay.entity.Device;
import com.epalmpay.entity.StatisAgent;
import com.epalmpay.entity.StatisAgentDay;
import com.epalmpay.entity.TradeOffline;
import com.epalmpay.service.index.IIndexService;

/** 
 * 说明：代理商首页
 * 创建人：gwn
 * 创建时间：2017-06-26
 */
@Controller
@RequestMapping(value="/agent")
public class AgentIndexController extends BaseController{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Resource
	private IIndexService indexService;
	
	
	@RequestMapping(value="/index")
	@ResponseBody
	public AgentIndexListOutDTO index(AgentIndexInDTO agentIndexInDTO){
		
		AgentIndexListOutDTO agentIndexListOutDTO= new AgentIndexListOutDTO();
		
		try {
			Date date = new Date();
	        Calendar calendar = new GregorianCalendar();
	        calendar.setTime(date);
	        calendar.add(calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动
	        date=calendar.getTime(); //这个时间就是日期往后推一天的结果 
	        agentIndexInDTO.setStatisDate(date);//昨日
			//查询昨日新增会员数 
			StatisAgentDay statisAgentDay = indexService.queryAddMemberSumAgent(agentIndexInDTO);
			agentIndexListOutDTO.setStatisAgentDay(statisAgentDay);
			//会员总数.本月新增代理商总数和门店总数.下级代理商总数.名下门店总数.本月门店交易总额 预计可得分润总额(本月分润金额)
			StatisAgent statisAgent=indexService.queryMemberCount(agentIndexInDTO);
			agentIndexListOutDTO.setStatisAgent(statisAgent);
			
			//终端数量 总数
			Device device = new Device();
			int totalCount = indexService.queryDeviceCount(agentIndexInDTO);
			int saleCount = indexService.queryDeviceSaleCount(agentIndexInDTO);//查询售后中终端
			device.setTotalCount(totalCount);
			device.setSaleCount(saleCount);
			agentIndexListOutDTO.setDevice(device);
			
			
			//今日目前交易金额(日交易总金额,日收入总金额)
//			agentIndexInDTO.setJoinStart(new Date());
//			List<AgentStatisAgentDayOutDTO> statisAgentOutDTOList = indexService.queryDayAmount(agentIndexInDTO);
//		    agentIndexListOutDTO.setStatisAgentDayOutDTOList(statisAgentOutDTOList);
		    
		    //预计今日产生分润总额
		    //ProfitAgent profitAgent = indexService.queryProfitAmount(agentIndexInDTO);
		    //agentIndexListOutDTO.setProfitAgent(profitAgent);
		    //今日目前交易额
		    TradeOffline tradeOffline = indexService.queryTotalAmount(agentIndexInDTO);
		    agentIndexListOutDTO.setTradeOffline(tradeOffline);

		    //预计今日产生分润总额(houjia)
			Profit profit = indexService.queryAgentProfitAmount(agentIndexInDTO);
			agentIndexListOutDTO.setProfit(profit);

		    //本月门店交易排行（前5名）
		    List<AgentIndexOutDTO> agentIndexOutDTOList = indexService.queryShopAmountMonth(agentIndexInDTO);
		    agentIndexListOutDTO.setAgentIndexOutDTOList(agentIndexOutDTOList);
		    //本月商品销量排行前5名
		    List<MallGoodOutDTO> mallGoodOutDTOList=indexService.queryGoodCount(agentIndexInDTO);
		    agentIndexListOutDTO.setMallGoodOutDTOList(mallGoodOutDTOList);
		    
		    //柱状图
		    List<AgentStatisAgentDaySevenDataOutDTO> statisAgentDaySevenDataOutDTOList= indexService.queryAgentSevenDayData(agentIndexInDTO);
		    agentIndexListOutDTO.setStatisAgentDaySevenDataOutDTOList(statisAgentDaySevenDataOutDTOList);
			
		     
		    agentIndexListOutDTO.setErrorCode(Rescode.SUCCESS, "处理成功");
			return agentIndexListOutDTO;
		} catch (ApplicationException ae) { 
			agentIndexListOutDTO.setErrorCode(ae.errCode, ae.errMsg);
			ae.printStackTrace();
		}catch (Exception e) {
			agentIndexListOutDTO.setErrorCode(Rescode.DEFAULT_PREFIX, "处理出现异常");
				e.printStackTrace();
		}
		return agentIndexListOutDTO;
		
	}
	
}
